#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Models.Marketmodels.Curvestates;
using Cephei.QL.Math;
namespace Cephei.QL.Models.Marketmodels.Driftcomputation
{
     // <summary> 
	// ! Returns the drift \f$ \mu \Delta t \f$. See Mark Joshi, Lorenzo Liesch, <i>Effective Implementation Of Generic Market Models</i>.
	// </summary>
    [Guid ("4F976677-7CFA-417a-8628-136A9C7A599C"),ComVisible(true)]
	public interface ISMMDriftCalculator 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 ISMMDriftCalculator Compute(Cephei.QL.Models.Marketmodels.Curvestates.ICoterminalSwapCurveState cs, Cephei.IVector<Double> drifts);
    }

    // <summary> 
	// ! Returns the drift \f$ \mu \Delta t \f$. See Mark Joshi, Lorenzo Liesch, <i>Effective Implementation Of Generic Market Models</i>. Factory
	// </summary>
   	[ComVisible(true)]
    public interface ISMMDriftCalculator_Factory // : Collection_Factory<ISMMDriftCalculator, ICell<ISMMDriftCalculator>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    ISMMDriftCalculator Create (Cephei.QL.Math.IMatrix pseudo, Cephei.IVector<Double> displacements, Cephei.IVector<Double> taus, UInt64 numeraire, UInt64 alive);
    }
}

